package org.teremail.delivery;

import java.util.Collection;
import java.util.concurrent.Future;

import org.teremail.mailbox.MailboxService;
import org.teremail.store.Store;

public interface Exchange {

    /**
     * Should deliver the message to all of the appropriate recipients.
     * Ideally implementations of this method should delivery asynchrounsly.
     * @param newParam TODO
     */
    Collection<Future<?>> deliver(Envelope newParam);

    /**
     * Get the store for this exchange.
     * 
     * @return
     */
    Store getStore();

    MailboxService getMailboxService();

}
